package cn.tedu.boot08.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

@RestController
public class UploadController {
    @RequestMapping("/upload")
    public String upload(MultipartFile picFile) throws IOException {
        /* 得到文件的原始文件名 */
        String fileName = picFile.getOriginalFilename();
        System.out.println(fileName);
        /* 先得到文件的后缀名 从最后一个点的位置截取到最后 */
        String suffix = fileName.substring(fileName.lastIndexOf("."));
        /* 得到唯一文件名 UUID.randomUUID() 得到一个16进制组成的唯一标识符 */
        fileName = UUID.randomUUID()+suffix;
        System.out.println("fileName = "+fileName);
        String dirPath = "D:/files";
        /* 准备日期路径 */
        SimpleDateFormat format = new SimpleDateFormat("/yyyy/MM/dd/");
        /* new Date() 导包 java.util 得到当前的系统时间 */
        String datePath = format.format(new Date());
        File dirFile = new File(dirPath+datePath);
        /* 判断文件夹不存在 */
        if (!dirFile.exists()) {
            /* 创建文件夹 */
            dirFile.mkdirs();
        }
        /* 得到文件的完整路径 D:/files/2023/03/07/xxxxxxxx.jpg */
        String filePath = dirPath+datePath+fileName;
        /* 把接收到的文件保存到上面的路径 异常抛出 */
        picFile.transferTo(new File(filePath));
        /* 把图片的路径响应给客户端 因为删除时会用到 */
        return datePath+fileName;
    }

    @RequestMapping("/remove")
    public void remove(String url){
        System.out.println("url = " + url);
        /* 把文件删除 */
        new File("D:/files"+url).delete();
    }
}
